/**
 * Copyright (c) 2011 eelpo.com
 * All rights reserved.
 */
package com.eelpo.cmmp.core.wicket.session;

import org.apache.wicket.Request;
import org.apache.wicket.Session;
import org.apache.wicket.protocol.http.WebSession;

/**
 * <pre>
 * 
 * 系统Session基类
 * 
 * </pre>
 * 
 * @author <a href="mailto:Brian@eelpo.com">汪洪州</a>
 * @since 1.0
 */
public abstract class CMMPSession extends WebSession {

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 2489655618596323307L;

	/**
	 * 构造函数
	 * 
	 * @param request
	 *            请求对象
	 */
	public CMMPSession(Request request) {
		super(request);
	}

	public static CMMPSession get() {
		return (CMMPSession) Session.get();
	}

	/**
	 * 获取当前登录用户的ID
	 * 
	 * @return
	 */
	public abstract String getUserId();

	/**
	 * 授权验证方法
	 * 
	 * @return 返回验证是否通过
	 */
	public abstract boolean isAuthorized();

	/**
	 * 权限检查方法
	 * 
	 * @param entityCode
	 *            实体代码
	 * @param actionCode
	 *            动作代码
	 * @return 返回是否拥有指定的权限
	 */
	public abstract boolean checkPermission(final String entityCode, final String actionCode);

	/**
	 * 权责检查方法
	 * 
	 * @param entityCode
	 *            实体代码
	 * @param authorityCode
	 *            权责代码
	 * @return 返回是否包含指定的权责
	 */
	public abstract boolean checkAuthority(final String entityCode, final String authorityCode);
}
